#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>

// 1. 分别定义一个整型变量、整形数组、字符串指针
static int baudrate = 9600;
static int port[4] = {0, 1, 2, 3};
static char* name = "vser";

// 2. 声明为模块参数
module_param(baudrate, int, S_IRUGO);
module_param_array(port, int, NULL, S_IRUGO);
module_param(name, charp, S_IRUGO);

static int __init vser_init(void)
{
    int i;
    printk("vser_inif\n");
    printk("baudrate: %d\n", baudrate);
    printk("port: ");
    for (i = 0; i < ARRAY_SIZE(port); i++) {
        printk("%d ", port[i]);
    }
    printk("\n");
    printk("name: %s\n", name);

    return 0;
}

static void __exit vser_exit(void)
{
    printk("cleanup_module\n");
}

module_init(vser_init);
module_exit(vser_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("KDY <chaoxi_todo@qq.com>");
MODULE_DESCRIPTION("A simple module");
MODULE_ALIAS("virtual-serial");